home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 05 / 4 / DISK0543.ZIP / XYZ.BAS < prev    next >
BASIC Source File  |  1985-06-02  |  4KB  |  129 lines

  1. 10     CLS
  2. 20  REM
  3. 30  REM
  4. 40  REM
  5. 50     LOCATE 5,15
  6. 60     PRINT  " *****  X,Y,Z COORDINATES  (1950.0)  OF THE SUN  ***** "
  7. 70     LOCATE 7,30
  8. 80     PRINT " BY CHRIS SPRATT --- 1985"
  9. 90     PRINT
  10. 100  REM
  11. 110     KEY OFF : LOCATE 24,25
  12. 120     PRINT "PRESS ANY KEY TO CONTINUE"
  13. 130     IF INKEY$ = "" THEN 130
  14. 140     CLS
  15. 150  REM
  16. 160     PRINT: PRINT:
  17. 170  REM
  18. 180      GOSUB 730
  19. 190  REM  PICK UP CONSTANTS
  20. 200    CLS
  21. 210    LOCATE 10,15
  22. 220    PRINT  " STARTING DATE (BETWEEN A.D. 1700-2100):"
  23. 230    PRINT
  24. 240    INPUT  "                             YEAR";Y
  25. 250    PRINT
  26. 260    INPUT  "                            MONTH";M
  27. 270    PRINT
  28. 280    INPUT  "                              DAY";D
  29. 290    GOSUB 620:DD = JD
  30. 300    JD = JD + 2440000#
  31. 310    ET = ((JD - 2444239#)/365.2421987#)*.0000119 + .00059
  32. 320    JD = JD + ET - 2440000#
  33. 330    PRINT :PRINT
  34. 340    INPUT  "                 INCREMENT (DAYS)";NN
  35. 350    PRINT
  36. 360    INPUT  "                TOTAL SPAN (DAYS)";NS
  37. 370  REM
  38. 380    CLS
  39. 390    FOR JD = DD TO DD + NS STEP NN
  40. 400    GOSUB 820
  41. 410    NEXT JD
  42. 420    PRINT : PRINT : PRINT : PRINT :
  43. 430    PRINT TAB(20) :   INPUT  "MORE (Y OR N)";Q$: IF Q$ = "Y" THEN GOTO 200
  44. 440    END
  45. 450  REM
  46. 460  REM      CALENDAR ROUTINE
  47. 470  REM
  48. 480  REM      ENTER WITH JD = ADJUSTED JULIAN DATE OF INTEREST
  49. 490  REM      (= TRUE JULIAN DATE - 2440000.0)
  50. 500    D7 = INT(JD+719019!)
  51. 510    IF JD<-24921 THEN D7=D7-1
  52. 520    Y7 = INT((D7-122.1)/365.25)
  53. 530    M7 = INT((D7-INT(365.25*Y7))/30.6001)
  54. 540    D6 = D7-INT(365.25*Y7)-INT(30.6001*M7)
  55. 550    M6 = M7-1
  56. 560    IF M7 > 13 THEN M6 = M6 - 12
  57. 570    Y6 = Y7
  58. 580    IF M6 <3 THEN Y6=Y6+1
  59. 590    M$ = MID$ (M1$,3*M6-2,3)
  60. 600    RETURN
  61. 610  REM
  62. 620  REM    JULIAN DATE ROUTINE
  63. 630  REM
  64. 640  REM    ENTER WITH D, M, Y OF INTEREST
  65. 650    IF M>=3 THEN 670
  66. 660    M = M+12:Y=Y-1
  67. 670    F = INT(Y/100)-INT(Y/400)
  68. 680    A = INT(365.25*(Y+4712))
  69. 690    B = INT((367*(M-1)+5)/12)
  70. 700    J = A+B-F-2440000.5#
  71. 710    JD= J+D
  72. 720    RETURN
  73. 730  REM                 CONSTANTS
  74. 740  REM
  75. 750    CLS
  76. 760    K = .01720209895#:  REM   GAUSSIAN CONSTANT
  77. 770    R1 = 3.1415926536#/180:  REM  RADIANS PER DEGREE
  78. 780    R0 = 1/R1
  79. 790    K8 = LOG(10)
  80. 800    E = 23.4457889# / R0
  81. 810    RETURN
  82. 820  REM
  83. 830  REM
  84. 840  REM
  85. 850  REM     X, Y, Z FOR THE SUN  --  1950.0
  86. 860  REM
  87. 870    T = (JD+24980)/36525!: REM CENTURIES SINCE JAN 0, 1900, 12H UT
  88. 880    P0 = (1.396041+.000308*(T+.5))*(T-.499998)
  89. 890    A = 100:GOSUB 1240:G0 = A+358.475833#:L0 = A+279.6966778#-P0
  90. 900    A = 1336: GOSUB 1240:C0 = A+270.4341639#-P0
  91. 910    A = 162:GOSUB 1240:V0 = A+212.603219#
  92. 920    A =  53: GOSUB 1240:M0 = A+319.529425#
  93. 930    A = 8: GOSUB 1240:J0 = A+225.444651#
  94. 940    G = (G0+T*(-.95025-.00015*T))*R1
  95. 950    C = (C0+T*(307.883142#-.001133*T))*R1
  96. 960    L = (L0+T*(.76892+.000303*T))*R1
  97. 970    V = (V0+T*(197.803875#+.001286*T))*R1
  98. 980    M = (M0+T*(59.8585+.000181*T))*R1
  99. 990    JJ = (JO+T*154.906654#)*R1
  100. 1000  REM
  101. 1010    X = .000011*(COS(2*G-L-2*JJ)+COS(2*G+L-2*V))
  102. 1020    X = X-.000012*(COS(G+L-V)+COS(4*G-L-8*M+3*JJ)-COS(4*G+L-8*M+3*JJ))
  103. 1030    X = X-.000014*COS(C-2*L)+.000017*COS(C)+.000018*SIN(2*G+L-2*V)
  104. 1040    X = X-.000021*T*COS(G+L)-.000026*SIN(G-L-JJ)+.000035*COS(2*G-L)
  105. 1050    X = X+.000063*T*COS(G-L)+.000105*COS(2*G+L)+.008374*COS(G+L)
  106. 1060    X = X-.025127*COS(G-L)+.99986*COS(L)
  107. 1070  REM
  108. 1080    Y = .00001*(-SIN(2*G-L-2*JJ)+SIN(2*G+L-2*V))
  109. 1090    Y = Y+.000011*(-SIN(G+L-V)+SIN(4*G-L-8*M+3*JJ)+SIN(4*G+L-8*M+3*JJ))
  110. 1100    Y = Y+.000013*SIN(C-2*L)+.000016*SIN(C)-.000017*COS(2*G+L-2*V)
  111. 1110    Y = Y-.000019*T*SIN(G+L)-.000024*COS(G-L-JJ)-.000032*SIN(2*G-L)
  112. 1120    Y = Y-.000057*T*SIN(G-L)+9.699999E-05*SIN(2*G+L)+.007683*SIN(G+L)
  113. 1130    Y = Y+.023053*SIN(G-L)+.917308*SIN(L)
  114. 1140    REM
  115. 1150    Z = -.00001*COS(G-L-JJ)-.000014*SIN(2*G-L)-.000025*T*SIN(G-L)
  116. 1160    Z = Z+.000042*SIN(2*G+L)+.003332*SIN(G+L)+.009998*SIN(G-L)
  117. 1170    Z = Z+.397825*SIN(L)
  118. 1180  REM
  119. 1190  REM
  120. 1200    PRINT :PRINT :PRINT :PRINT
  121. 1210    PRINT TAB(10)"X";X :PRINT : PRINT  TAB(10) "Y";Y : PRINT
  122. 1220    PRINT TAB(10) "Z";Z
  123. 1230    RETURN
  124. 1240  REM      NORMALIZATION -- A IN, A OUT.
  125. 1250  REM
  126. 1260    A = 360*(A*T-INT(A*T))
  127. 1270    RETURN
  128. 1280    END
  129.